home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Deutsche Edition 1
/
Deutsche Edition 1.iso
/
amok
/
amok_lha
/
amok29.lha
/
Strings
/
Strings.dok
< prev
next >
Wrap
Text File
|
1993-08-15
|
4KB
|
96 lines
======================================================================
Dokumentation zu "Strings" Version 1.0
Autor: Nicolas Benezan, Postwiesenstr. 2, D7000 Stuttgart 60
======================================================================
Kopierrecht
Das komplette Packet (Quelltext, Dokumentation und Objectcode) ist
Public Domain Software. Es darf beliebig kopiert und verbreitet werden
solange...
* mein Name und dieser Kopierrechtshinweis erhalten bleiben,
* die Vollständigkeit des ganzen Packets gewährleistet ist, und
* mit dem Vertrieb dieser Software kein Gewinn erwirtschaftet wird.
Die Kommerzielle Nutzung ohne meine ausdrückliche schriftliche
Genehmigung ist untersagt (über Gewinnbeteiligung läßt sich reden).
W i c h t i g: Dies gilt insbesondere auch für "schwarze Schafe" der "PD"-
Versandhäuser, die ganz offensichtlich Gewinn machen, was z.B. durch
ganzseitige Anzeigen in Zeitschiften erkennbar ist.
Verbesserungsvorschläge sind stets willkommen. Falls Sie Veränderungen
am Programm vornehmen, dokumentieren Sie diese bitte gut verständlich.
Es würde mich freuen, wenn Sie mich über größere Veränderungen in
Kenntnis setzen würden.
(c) 1988 by Nicolas Benezan.
Übersicht
* Umfang des Packets
* Einleitung
* Beschreibung der Module
Umfang des Packet
Das komplette Packet "Strings" beinhaltet folgendes:
* StringOps.dok Diese Dokumentation
* StringOps.def, -.mod grundlegende Stringoperationen, Quellcode
* StringOps.sym, -.obj grundlegende Stringoperationen, compiliert
* StringForm.def, -.mod Formatierung von Strings, Quellcode
* StringForm.sym, -.obj Formatierung von Strings, compiliert
* StringConv.def, -.mod Umwandlung String/numerisch, Quellcode
* StringConv.sym, -.obj Umwandlung String/numerisch, compiliert
(Stand 1.Dez.1989)
Einleitung
Modula-2 bietet von sich aus praktisch keine Möglichkeiten, Zeichenketten
(Strings) zu verarbeiten, und das Standardmodul "Strings" ist sehr
umständlich und nicht gerade logisch aufgebaut (Ich hasse "Wollmilchsau"-
Prozeduren). Das Modul "Str" ist schon sehr viel kompakter, aber es gibt
Dinge die kann man mit "Str" nicht machen (z.B. einen Teilstring aus einem
großen String herausschneiden). Deshalb braucht man meistens beide Module.
Ich habe mir deshalb meine eigenen Module zur Stringbearbeitung geschrieben,
und dabei darauf geachtet, wie ich meine, eine sinnvollere Schnittstelle
wie die von "Strings" und "Str" zu definieren.
Weil in Assembler geschrieben, dürfte "Str" im Moment noch schneller sein
als mein Modul. Ich habe aber vor, zeitkritische Routinen (Length, Compare
usw.) irgendwann einmal zu optimieren. (Tips für schnellere Algorithmen
sind jederzeit willkommen.) Leider braucht "StringOps" auch ungefähr so
viel Speicher wie "String" und "Str" zusammen.
Beschreibung der Module
"StringOps" beinhaltet die Grundlegenden Operationen wie Anfügen, Trennen,
Kopieren, Vergleichen, Einfügen und Löschen von Strings.
Alles wichtige über die Verwendung der Prozeduren steht eigentlich im
Definitionsmodul, weshalb ich hier auf eine Beschreibung im Einzelnen
verzichten möchte.
"StringForm" enthält Prozeduren zum Formatiern von Strings wie z.B.
Zentrieren, Rechts/Linksbündig machen, Anfügen oder Entfernen von
Leerzeichen usw.
Da man solche Operationen nur in seltenen Fällen braucht, wurden sie nicht
in "StringOps" integriert.
"StringConv" bietet Prozeduren zum Umwandeln von (Long-)Integer- und
Cardinal- Variablen zu Strings und umgekehrt an. Es wurde auch hier darauf
geachtet, eine möglichst sinnvolle und kompakte Schnittstelle zu
definieren. Während man z.B. bei "StrToVal" aus dem Modul "Conversions"
eine Unmenge von meist unnötigen VAR-Parametern braucht (signed, base,
err), hat "StrToInt" aus "StringConv" nur einen einzigen Parameter und
liefert das Resultat als Funktionsrückgabewert, sodaß es direkt in
Rechnungen (Expressions) eingesetzt werden kann. Wegen der
Zuweisungskompatiblität von LONGINT, INTEGER und CARDINAL braucht man
meistens auch keine Dummy-Variable als Zwischenspeicher (der Parameter "l"
von "StrToVal" muß wegen des VARs immer LONGINT sein).